package enemigo;

import java.lang.reflect.Constructor;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

import componentes.Juego;
import componentes.Jugador;
import componentes.Nivel;
import componentes.enemigo.Arania;
import componentes.enemigo.Cucaracha;
import componentes.enemigo.Enemigo;
import componentes.enemigo.Hormiga;
import componentes.enemigo.Mosca;

/**
 * Genera enemigos al azar a partir de los que tiene cargados en el mapa.
 * @author mwaisgold
 *
 */
public class EnemigoFactory {
	
	private static Map mapaParaCrearEnemigo = new HashMap();
	
	static {
		mapaParaCrearEnemigo.put(new Integer(0), Cucaracha.class);
		mapaParaCrearEnemigo.put(new Integer(1), Mosca.class);
		mapaParaCrearEnemigo.put(new Integer(2), Hormiga.class);
		mapaParaCrearEnemigo.put(new Integer(3), Arania.class);
	}

	public static Enemigo generarEnemigo(Juego juego) {
		Random rnd = new Random();
		
		try {
			Class claseDeEnemigo = (Class) mapaParaCrearEnemigo.get(new Integer(rnd.nextInt(mapaParaCrearEnemigo.size())));
			Constructor constructor = claseDeEnemigo.getConstructor(Nivel.class, Jugador.class);
			return (Enemigo) constructor.newInstance(juego.getNivel(), juego.getJugador());
		} catch (Exception e) {
			return null;
		}
		
		
	}
	
	

}
